package Week3;

import java.util.*;

public class Day13 {
}

//牛客:牛牛冲钻五
class Main1 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int T = in.nextInt();
        while(T-- != 0){
            int n = in.nextInt() , k = in.nextInt() , ret = 0 , count = 0;;
            char[] s = in.next().toCharArray();
            for(int i = 0; i < n; i++){
                //如果胜利
                if(s[i] == 'W'){
                    //但不连胜就加一颗星
                    ret++;
                    count++;
                    //且胜利次数大于3
                    if(count >= 3){
                        //就加上k的星数
                        ret += k - 1;
                    }
                }else{
                    //如果失败就减一颗星
                    ret--;
                    count = 0;
                }
            }
            System.out.println(ret);
        }
    }
}

//牛客:NC41 最长无重复子数组
class Solution1 {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param arr int整型一维数组 the array
     * @return int整型
     */
    public int maxLength (int[] arr) {
        //滑动窗口
        // write code here
        int left = 0 , right = 0 , ret = 0;;
        int n = arr.length;
        //模拟哈希表
        int[] hash = new int[100000];
        while(right < n){
            //入窗口
            hash[arr[right]]++;
            //如果已经存在
            while(hash[arr[right]] > 1){
                //从左边出窗口
                hash[arr[left]]--;
                left++;
            }
            //计算长度的最大值
            ret = Math.max(ret,right - left + 1);
            right++;
        }
        return ret;
    }
}


class Main2 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        char[] s = in.next().toCharArray();
        char maxchar = '0';
        int maxlen = 0;
        int[] hash = new int[26];
        for(int i = 0; i < n; i++){
            char ch = s[i];
            //记录个数最多的字符和它的个数
            if(++hash[ch - 'a'] > maxlen){
                maxchar = ch;
                maxlen = hash[ch - 'a'];
            }
        }

        //如果最多的字符个数超过一半那么必然无法重排
        if(maxlen > (n + 1) / 2){
            System.out.println("no");
        }else{
            char[] ret = new char[n];
            int i = 0;
            System.out.println("yes");
            //将最多的字符以隔一个放一个的形式存放到新数组中
            while(maxlen-- != 0){
                ret[i] = maxchar;
                i += 2;
            }
            //将个数最多的字符删除
            hash[maxchar - 'a'] = 0;

            //遍历剩下的字符
            for(int j = 0; j < 26; j++){
                if(hash[j] != 0){
                    //依然是隔一个放一个
                    while(hash[j]-- != 0){
                        //如果超过了数组长度就从1开始存放
                        if(i >= n){
                            i = 1;
                        }
                        ret[i] = (char)(j + 'a');
                        i += 2;
                    }
                }
            }
            //打印新的数组
            for(int x = 0; x < n; x++){
                System.out.print(ret[x]);
            }
        }
    }
}